<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script>

//【示例1】
var a = new Boolean(false);
var b = new Number(0);
var c = new String("");
a && alert(a); 	// a转换为布尔值为true，但是提示它的字符串转换值为"false"
b && alert(b); 	// b转换为布尔值为true，但是提示它的字符串转换值为"0"
c && alert(c); 	// c转换为布尔值为true，但是提示它的字符串转换值为""

//【示例2】
var a = new Boolean(true); 		// 把true封装为对象
alert(a.valueOf());				// 测试该对象的值为true
alert(typeof (a.valueOf()));		// 测试值的类型为boolean
a = a - 0; 							// 投放到数值运算环境中
alert(a); 							// 返回值为1
alert(typeof a); 					// 再次测试它的类型，则为number

//首先，直接使用valueOf()方法取值，没有成功。
a = a.valueOf();					// 取出对象自身值
alert(a); 							// 返回true
alert(typeof a); 					// 返回类型为boolean
//然后，把对象自身值转换为字符串，再次尝试转换，没有成功。
a = a.valueOf();					// 取出对象自身值
a = a.toString();					// 转换为字符串，返回"true"
a = parseFloat(a);				 	// 转换为数值
alert(a); 							// 返回为NaN
alert(typeof a); 					// 返回类型为number
//最后，尝试强制转换，则成功。
a = a.valueOf();					// 取出对象自身值
a = Number(a); 						// 强制转换
alert(a); 							// 返回1
alert(typeof a); 					// 返回类型为number





var a = [5];
a = a * 1; 							// 投放到数值运算环境中
alert(a); 							// 返回数值5
alert(typeof a); 					// 返回类型为number


var a = [true];
a = a * 1;
alert(a); 							// 返回数值NaN
alert(typeof a); 					// 返回类型为number


var a = new String("a");			// 字符串封装为对象
var b = new Boolean(true); 		// 布尔值封装为对象
a = a + 0; 							// 加号运算
b = b + 0; 							// 加号运算
alert(a); 							// 返回字符串"a0"
alert(b); 							// 返回数值1


var a = new String(1);
var b = new Boolean(true);
a = a + "";
b = b + "";
alert(a); 							// 返回字符串"1"
alert(b); 							// 返回字符串"true"


var a = new String("true");		// 无法转换为数值
var b = new Boolean(true); 		// 可以转换为数值1
a = a > 0 ;
b = b > 0 ;
alert(a); 							// 返回false，以字符串形式进行比较
alert(b); 							// 返回true，以数值形式进行比较



</script>
</head>
<body>
</body>
</html> 
